using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test171220
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Broj zadatka: ");
            int x=Convert.ToInt32(Console.ReadLine());

            switch (x)
            {
                case 0:
                    {
                        zad0();
                        Console.ReadKey();
                        break;
                    }
                case 1:
                    {
                        zad1();
                        Console.ReadKey();
                        break;
                    }
                case 2:
                    {
                        zad2();
                        Console.ReadKey();
                        break;
                    }
                case 3:
                    {
                        zad3();
                        Console.ReadKey();
                        break;
                    }
                case 4:
                    {
                        zad4();
                        Console.ReadKey();
                        break;
                    }
            }

        }

        static void zad0()
        {
            Console.Write("Broj elemenata u nizu: ");
            int n=Convert.ToInt32(Console.ReadLine());
            List<string> s = new List<string> ();

            for(int i=0;i<n;++i)
            {
                s.Add(Console.ReadLine());
            }

            int sum = 0;
            foreach (string a in s)
            {
                if ((a.Length < 5) || (a[0] == 'a') || (a[0] == 'A'))
                    ++sum;
            }

            Console.WriteLine("Broj elemenata koji zadovoljavaju bar jedan od uslova: {0}", sum);
        }

        static void zad1()
        {
            Console.Write("Broj elemenata u nizu: ");
            int n = Convert.ToInt32(Console.ReadLine());
            List<double> a = new List<double>();

            for (int i = 0; i < n; ++i)
            {
                a.Add(Convert.ToDouble(Console.ReadLine()));
            }

            a.Sort();
          
            double med = a[a.Count/ 2];

            Console.WriteLine("Medijana datog niza je {0}", med);
        }

        static void zad2()
        {
            Console.WriteLine("Granicni broj: ");
            int n = Convert.ToInt32(Console.ReadLine());
            List<int> a = new List<int>();

            for (int i = 2; i < n; i++)
                a.Add(i);

            int p = 0;
            while (p < a.Count())
            {
                int x = a[p];
                a.RemoveAll(e => e % x == 0 && e > x);
                p++;
            }
            Console.WriteLine("Prosti brojevi do n: ");
            foreach (int s in a)
                Console.WriteLine(s);
        }

        static void zad3()
        {
            List<List<int>> u = new List<List<int>>();
            List<int> pom = new List<int>();
            Console.Write("Broj ucenika: ");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.Write("Broj predmeta: ");
            int p = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < n; ++i)
            {
                Console.WriteLine("Ucenik br: " + (i + 1));
                Console.Write("Koliko ovaj ucenik ima ocena? ");
                int o = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Unos ocena: ");
                for (int j = 0; j < o; ++j)
                {
                    pom.Add(Convert.ToInt32(Console.ReadLine()));
                }
                u.Add(pom);
            }

                int sveo = 0;
                foreach (List<int> a in u)
                {
                    if (a.Count == p)
                        sveo++;
                }

                List<double> trojke = new List<double>();

                foreach (List<int> a in u)
                {
                    int f=a.Count;
                    List<int> t = a.FindAll(s => s == 3);
                    int tt = t.Count;
                    double av=tt/f;
                    trojke.Add(av);
                }

                double max3 = trojke.IndexOf(trojke.Max());

                Console.WriteLine("Sve ocene ukupno ima {0} ucenika a najveci procenat trojaka ima ucenik sa indeksom{1}."
                    , sveo, max3);

            }

        static void zad4()
        {
            Console.Write("Broj elemenata u nizu: ");
            int n = Convert.ToInt32(Console.ReadLine());
            List<string> s = new List<string>();

            Console.WriteLine("Unos elemenata: ");
            for (int i = 0; i < n; ++i)
            {
                s.Add(Console.ReadLine());
            }

            List<int> br5 = new List<int>();
            for (int i = 0; i < n; i++) 
            {
                char spliter = '5';
                string [] count5 = s[i].Split(spliter);
                br5.Add(count5.Length);
            }

            int del4 = 0;

            foreach (string a in s)
            {
                double p = Convert.ToDouble(a);
                if (p % 4 == 0)
                del4++;
            }

            Console.WriteLine("Cifru 5 svaki element sadrzi ovoliko puta: ");
            foreach (int b in br5)
            {
                Console.Write(b + " ");
            }
            Console.WriteLine("Elemenata koji su deljivi sa 4 ima {0}.", del4); 
        }

        static void zad5()
        {
            Console.Write("Broj linija teksta :");
            int n = Convert.ToInt32(Console.ReadLine());
            string[] s = new string[n];
            int sumw = 0;
            string maxL, minL;

            for (int i = 0; i < n; ++i)
            {
                s[i] = Console.ReadLine();
                string[] subs = s[i].Split(' ');
                sumw += subs.Length;
                maxL=subs[0];
                minL=subs[0];
                for (int j = 0; j < subs.Length; ++j)
                {
                    if (subs[j].Length > maxL.Length)
                    {
                        maxL = subs[j];
                    }

                    if (subs[j].Length < minL.Length)
                    {
                        minL = subs[j];
                    }
                }

                Console.WriteLine("Ukupan broj reci je {0}, najmanja rec je {1}, a najveca je {2}.", sumw, minL, maxL);
            }

        }
   }
    
}
